// 如果需要在组件中使用计算属性功能，需要导入ComponentWithComputed'
import { ComponentWithComputed } from 'miniprogram-computed'
// 需要使用导入的ComponentWithComputed 替换 Component 方法
ComponentWithComputed({
    // 计算属性：基于已有的数据生产新的数据
    // 在使用 ComponentWithComputed 方法构建组件以后
    // 这时候，就可以新增两个配置项computed以及watch配置项
    computed: {
        total(data){
            // 计算属性方法内部必须有返回值
            // 在计算属性内部，不能使用this来获取data中的数据
            // 如果想获取 data 中的数据，需要使用形参
            // 计算属性具有缓冲特性
            // 计算属性只执行一次，后续在使用的时候，返回的是第一次执行的结果
            // 只要依赖的数据，没有发生改变，返回的始终是第一次执行的结果
            // 只要计算属性依赖的数据发生了变化，计算属性就会重新执行
            return data.a + data.b
        }
    },
    // watch数据监听器，用来监听数据是否发生了变化，在数据变化以后执行相应的逻辑
    watch: {
        // key: 需要监听的数据
        // value: 是回调函数，有一个形参，形参是最新的、改变以后的数据
        // a: function (a) {
        //     console.log(a)
        // },
        // b: function(b){
        //     console.log(b)
        // }
        // 同时监听多个数据，数据与数据之间需要使用，进行分隔
        'a, b': function(a,b){
            // 在 watch内部监听的数据变化以后，就可以来执行相应的逻辑
            console.log(a,b)
            this.setData({
                c: a + b
            })
        }
    },
    /**
     * 组件的属性列表
     */
    properties: {

    },

    /**
     * 组件的初始数据
     */
    data: {
        a: 1,
        b: 2,
        c:''
    },

    /**
     * 组件的方法列表
     */
    methods: {
        updateData () {
            this.setData({
                a: this.data.a + 1,
                b: this.data.b + 1,
            })
        }
    }
})